import pandas as pd

# 1) 输入/输出文件路径（请改成你自己的文件路径）
input_path = "../data/Titanic/titanic_test2.csv"  # 你的输入文件
output_path = "../data/Titanic/titanic_test3.csv"  # 输出文件

# 2) 读取 CSV
df = pd.read_csv(input_path)

# 3) 把 TRUE/FALSE（大小写混合也能识别）转成 1/0
df = df.map(lambda x: 1 if str(x).upper() == "TRUE" else (0 if str(x).upper() == "FALSE" else x))


def safe_to_numeric(x):
    try:
        return pd.to_numeric(x)
    except (ValueError, TypeError):
        return x


# 4) 转换列类型（能转为数字的都转）
df = df.apply(safe_to_numeric)

# 5) 检查是否还存在非数值型列
non_numeric_cols = df.select_dtypes(include=["object"]).columns.tolist()
if non_numeric_cols:
    print("仍存在非数值列：", non_numeric_cols)
else:
    print("所有列已是数值型，可以直接用于模型训练。")

# 6) 保存为新 CSV
df.to_csv(output_path, index=False)
print(f"已保存纯数值数据到：{output_path}")

# 7) 预览前 5 行
print(df.head())
